home *** CD-ROM | disk | FTP | other *** search
Text File | 1997-03-21 | 4.1 KB | 127 lines | [TEXT/CWIE] |
- //
- // CAGASlider.h
- //
- // Apple Grayscale Appearance Slider class for PowerPlant
- // Subclassed from LControl
- //
- // version 1.4.2 - March 21, 1997
- //
- // Copyright © 1996-1997 by James Jennings. All rights reserved.
- //
-
- #pragma once
-
- #include <LControl.h>
- #include <UGWorld.h>
- #include <URegistrar.h>
- #include "UGrayscaleAppearance.h"
-
- // In version 1.4.2 the slider redraws itself when it's appearance changes.
- // Since this might affect backward compatibility, I've added a compiler flag.
- #define SLIDER_DRAWS_SELF
-
- class CAGASlider : public LControl, public UGrayscaleAppearance {
- public:
- enum { class_ID = 'Slid' };
- static CAGASlider* CreateFromStream(LStream *inStream);
- static void Register(void)
- { URegistrar::RegisterClass(CAGASlider::class_ID,
- (ClassCreatorFunc) CAGASlider::CreateFromStream); }
-
- CAGASlider(LStream *inStream);
- CAGASlider(const CAGASlider &inSlider); // copy constructor
- virtual ~CAGASlider();
-
- // Recalculate mTrackRect when the frame changes size.
- virtual void ResizeFrameBy(Int16 inWidthDelta, Int16 inHeightDelta, Boolean inRefresh);
- virtual void MoveBy(Int32 inHorizDelta, Int32 inVertDelta, Boolean inRefresh);
-
- static void Purge(); // Release indicator images
-
- // Enumerations for controling display states.
- typedef enum {
- hot_None = 0,
- hot_Indicator,
- hot_Track // don't confuse 'the track' with 'mouse tracking'.
- } EHotSpots;
- typedef enum {
- ind_Enabled = 0,
- ind_Pressed,
- ind_Ghost,
- ind_Disabled
- } EIndicatorState;
- typedef enum {
- ind_Horizontal = 0,
- ind_North,
- ind_South,
- ind_Vertical,
- ind_East,
- ind_West
- } EIndicatorDirection;
-
- protected:
- EIndicatorDirection mDirection;
- EIndicatorState mState;
- Uint16 mNumberOfTicks; // 0 = no ticks, 1 = max-min+1 ticks, >1 is the number
- // mContinuousBroadcast == true -> broadcast changes without waiting for mouseUp
- Boolean mContinuousBroadcast;
- // mMinIsBottomOrRight == true -> direction of increasing value is up or left,
- // opposite that of standard scrollbars.
- Boolean mMinIsBottomOrRight;
-
- Boolean mIsTracking;
- Int32 mTrackingValue;
- Rect mTrackRect; // bounds for drawing the track
- Rect mChangedRect; // what to redraw while tracking the indicator
-
- virtual void DrawSelf();
- virtual void DrawSelfBasic( Boolean useGrays );
- virtual void DrawTrack( EIndicatorState inState, Boolean inUseGrays = true );
- virtual void DrawIndicator( Int32 inValue, EIndicatorState inState = ind_Enabled,
- Boolean inUseGrays = true );
- virtual void DrawTickMarks( UInt16 inNumber, EIndicatorState inState,
- Boolean inUseGrays = true );
-
- // virtual void DrawIcon1( Rect inWhere, ResIDT inWhich, Boolean inUseGrays );
- virtual void DrawIcon( Rect inWhere, EIndicatorDirection inDirection,
- EIndicatorState inState, Boolean inUseGrays );
- virtual void InitColorData();
- virtual void InitBlackAndWhiteData();
- virtual void InitMaskData();
- virtual void InitPICTDataHelper( LGWorld *inWorld, const ResIDT inPICT,
- const Rect inRect );
-
- // virtual void GetBackground(RGBColor &outColor);
- virtual void DetectBackgroundColor();
- virtual void DrawBackground( const Rect &inRect, Boolean inUseGrays );
- RGBColor mBackground;
-
- static LGWorld * sColorData;
- static LGWorld * sBlackAndWhiteData;
- static LGWorld * sMaskData;
-
- enum EOrientation { orient_Horizontal, orient_Vertical };
- virtual EOrientation GetOrientation();
-
- virtual void ValueToIndicatorRect( Int32 inValue, Rect & outRect );
- virtual Point ValueToPosition( Int32 inValue );
- virtual Int32 PositionToValue( Point inPosition );
-
- virtual void GetTrackRect( Rect &outRect );
- virtual void CalcTrackRect();
-
- virtual Int16 FindHotSpot(Point inPoint);
- virtual Boolean PointInHotSpot(Point inPoint, Int16 inHotSpot);
- virtual Boolean TrackHotSpot(Int16 inHotSpot, Point inPoint);
- virtual void HotSpotAction(Int16 inHotSpot, Boolean inCurrInside, Boolean inPrevInside);
- virtual void HotSpotResult(Int16 inHotSpot);
-
- #ifdef SLIDER_DRAWS_SELF
- public:
- virtual void SetValue( Int32 inValue );
- protected:
- virtual void EnableSelf();
- virtual void DisableSelf();
- #endif // SLIDER_DRAWS_SELF
- };
-